package com.expdatacloud.mapper;

import com.expdatacloud.dto.BadSkuOverThreeDaysDto;
import com.expdatacloud.dto.OverdueMaterialDto;
import com.expdatacloud.dto.UnQualifiedQualityDto;
import com.expdatacloud.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author jie
 * @date 2019/12/1 -15:20
 */
public interface ReportsMapper {
    /**
     * 收货预定看板
     */
    List<ReceivingBoardVo> receivingBoardList();

    /**
     * 质检未合格看板
     */
    List<UnQualifiedQualityVo> unQualifiedQualityList(UnQualifiedQualityDto unQualifiedQualityDto);

    /**
     * 收获日对账
     */
    List<ReceivingReconciliationVo> reconciliationList(@Param("startTime") String startTime,
                                                       @Param("endTime") String endTime);

    /**
     * iqc 履历日对账统计表
     */
    List<IqcHistoryReconciliationVo> iqcHistoryReconciliationList(@Param("startTime") String startTime,
                                                                  @Param("endTime") String endTime);

    /**
     * IQC来料日报表
     */
    List<SuppliedMaterialsDailyVo> suppliedMaterialsList(SuppliedMaterialsDailyVo suppliedMaterialsDailyVo);


    /**
     * IQC来料周报表
     *
     * @param week 自然周
     * @param udf8 物料大类
     * @return suppliedMaterialsCheckWeekReport
     */
    SuppliedMaterialsCheckWeekReportVo suppliedMaterialsCheckWeekReport(@Param("year") String year, @Param("week") int week,
                                                                        @Param("modelKeys") String[] modelKeys,
                                                                        @Param("udf8") String udf8,
                                                                        @Param("shipper") String shipper);

    /**
     * 获取周list
     */
    List<SuppliedMaterialsCheckWeekReportVo> weekList(@Param("startTime") int startTime, @Param("endTime") int endTime);

    /**
     * 获取周list
     */
    List<SuppliedMaterialsCheckWeekReportVo> weekAndUDF8List(@Param("startTime") int startTime, @Param("endTime") int endTime);

    /**
     * 获取物料大类集合
     */
    List<String> getUdf8List();

    /**
     * IQC来料月报
     */
    SuppliedMaterialsCheckMonthReportVo suppliedMaterialsCheckMonthReport(@Param("year") int year,
                                                                          @Param("month") int month,
                                                                          @Param("modelKeys") String[] modelKeys,
                                                                          @Param("shipper") String shipper);

    /**
     * IQC来料检验十差/佳供应商表
     *
     * @param flag  ok 十佳 否则 十差
     * @param year  年
     * @param month 月
     */
    List<SuppliedMaterialsBadTop10Vo> suppliedMaterialsBadTop10VoList(@Param("flag") String flag, @Param("year") String year, @Param("month") String month);

    /**
     * 供应商10差修改
     */
    int updateTop10(SuppliedMaterialsBadTop10Vo suppliedMaterialsBadTop10Vo);

    /**
     * 获取两个日期间隔的月份数
     */
    int getMonthCount(@Param("start") String start,
                      @Param("end") String end);

    /**
     * 获取起始年份的月份
     */
    int getStartMonth(@Param("start") String start);

    List<OverdueMaterialVo> getOverdueMaterial(OverdueMaterialDto overdueMaterialDto);

    List<BadSkuThreeDaysVo> getBadSkuOverThreeDays(BadSkuOverThreeDaysDto badSkuOverThreeDaysDto);

    List<NewitrnVo> getNewitrn (BadSkuOverThreeDaysDto badSkuOverThreeDaysDto);


}
